#include <stdio.h>
/*
int a=10;

int main()
{
	printf("a is %d\n",a);
}

这种情况下，main函数是可以访问其外部的a变量
此时a变量默认是extern
*/

int main()
{
	//扩展变量a的作用域
	extern int a;
	printf("a is %d\n",a);
}

int a=10;
/*
 * 如果外部变量不在文件的开头定义，其有效的作用范围只限于定义处到文件终了。
 * 如果在定义点之前的函数想引用该全局变量，则应该在引用之前用关键字extern对该变量作外部变量声明，
 * 表示该变量是一个将在下面定义的全局变量。
 * 有了此声明，就可以从声明处起，合法地引用该全局变量，这种声明称为提前引用声明。 
 *
 * 如果一个程序包含两个文件，在两个文件中都要用到同一个外部变量num，不能分别在两个文件中各自定义一个外部变量num。
 * 正确的做法是：在任一个文件中定义外部变量num，而在另一文件中用extern对num作外部变量声明。即 
 *
 * 　　extern int num; 
 *
 * 编译系统由此知道num是一个已在别处定义的外部变量，它先在本文件中找有无外部变量num，如果有，则将其作用域扩展到本行开始(如上节所述)，
 * 如果本文件中无此外部变量，则在程序连接时从其他文件中找有无外部变量num，
 * 如果有，则把在另一文件中定义的外部变量num的作用域扩展到本文件，在本文件中可以合法地引用该外部变量num。 
 */
